/*
 说明:本文件是基于easyui和jq的基础上做封装的，本文件是公共js，禁止修改本文件，本文件已经提供好接口只需要配参数即可使用，
 如果要修改里面的方法，不要直接在本文件修改，可以这样做先实例化  var FastDevTool1 = new FastDevTool();
 作者:姚观寿
 */
(function (window) {
    function FastDevTool() {
        return this === window && new FastDevTool();
    }

    FastDevTool.prototype = {

        constructor: this,
        /***********************************************************************************************
         *@method ： extend
         *@description ：覆盖，浅拷贝！
         *@param  ：{obj}SubClass 子类，
         *@param  ：{obj}SuperClass 超类
         *@return void
         *@author ： yao
         *@createTime：
         *@modifyTime ：
         ***********************************************************************************************/
        extend: function (SubClass, SuperClass) {
            for (var i in SuperClass) {
                if (SuperClass.hasOwnProperty(i)) {
                    SubClass[i] = SuperClass[i];
                }
            }
        },

        /***********************************************************************************************
         *@method ： checkIsCoocaa
         *@description ：
         *@param  ： {String}id
         *@param  ： {String}idPrefix 配置id前缀
         *@return boolean  通过为true, 不通过为false
         *@author ： bjh
         *@createTime：
         *@modifyTime ：
         ***********************************************************************************************/
        checkIsCoocaa: function (id) {
            var isCoocaa = true;
            var idTag = (id + '').substr(0, 2);
            if (idTag !== $idPrefix) {
                isCoocaa = false;
            }
            return isCoocaa;
        },


        /***********************************************************************************************
         *@method ： isChina
         *@description ：判断是否是纯中文！
         *@param  ：{string}s   传入字符串
         *@return void
         *@author ： yao
         *@createTime：
         *@modifyTime ：
         ***********************************************************************************************/
        isChinese: function (s) {
            return /^[\u4E00-\u9FA5]+$/i.exec(s) ? true : false;
        },

        /***********************************************************************************************
         *@method ： isEnglish
         *@description ：判断是否是纯英文！
         *@param  ：{string}s   传入字符串
         *@return void
         *@author ： yao
         *@createTime：
         *@modifyTime ：
         *************************************************************************************/
        isEnglish: function (s) {
            return /^[a-zA-Z]+$/i.exec(s) ? true : false;
        },

        deepCopy: function (p, c) {

            var c = c || {};
            for (var i in p) {
                switch (Object.prototype.toString.call(p[i])) {
                    case '[object Array]':
                        c[i] = [];
                        this.deepCopy(p[i], c[i]);
                        break;
                    case '[object Object]':
                        c[i] = {};
                        this.deepCopy(p[i], c[i]);
                        break;
                    default:
                        c[i] = p[i];
                }
            }
            return c;
        },

        clone: function (obj) {
            var _this = this;
            var o;
            switch (typeof obj) {
                case 'undefined':
                    break;
                case 'string':
                    o = obj + '';
                    break;
                case 'number':
                    o = obj - 0;
                    break;
                case 'boolean':
                    o = obj;
                    break;
                case 'object':
                    if (obj === null) {
                        o = null;
                    } else {
                        if (obj instanceof Array) {
                            o = [];
                            for (var i = 0, len = obj.length; i < len; i++) {
                                o.push(_this.clone(obj[i]));
                            }
                        } else {
                            o = {};
                            for (var k in obj) {
                                o[k] = _this.clone(obj[k]);
                            }
                        }
                    }
                    break;
                default:
                    o = obj;
                    break;
            }
            return o;
        },

        /***********************************************************************************************
         *@method ： ajax
         *@description ：ajax请求
         *@param  ：{String}url:请求的连接，
         *@param  ：{obj}o_data：请求的参数，例如{type:'机型',model:'t43',page:1,rows:10}
         *@param  ：{function}callback用于请求的回调函数，参数 data， 获取请求成功的数据
         *@param  ：{obj}o__option jq中的ajax拓展参数，可以覆盖默认参数 比如设置{type: "get",dataType: "jsonp",jsonp: "callback"}将会设置jsonp数据格式实现跨域，当然可以设置新的参数{username:'yao'}
         *@return void
         *@author ： yao
         *@createTime：
         *@modifyTime ：
         ***********************************************************************************************/
        ajax: function (url, o_data, callback, options) {

            var o_data = o_data || {}, _options, options = options || {};

            _options = {
                async: true,
                type: 'POST',
                dataType: 'json',
                url: url,
                data: o_data,
                success: function (data) {
                    $.messager.progress('close');

                    callback && callback(data);
                },
                error: function () {
                    $.messager.progress({
                        title: '请求',
                        msg: '服务请求错误,请稍后重试'
                    });
                    setTimeout(function () {
                        $.messager.progress('close');
                    }, 500)
                }
            };
            this.extend(_options, options);
            $.messager.progress({
                title: '正在加载',
                msg: '正在加载数据,请稍候'
            });
            $.ajax(_options);
        }
    }
    window['FastDevTool'] = FastDevTool;
})(window)
